﻿
namespace GPX {
    using System.Xml.Serialization;



    /// <summary>
    /// GPX documents contain a metadata header, followed by waypoints, routes, and tracks. 
    /// You can add your own elements to the extensions section of the GPX document. 
    /// </summary>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.42")]
    [System.SerializableAttribute()]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://www.topografix.com/GPX/1/1")]
    [System.Xml.Serialization.XmlRootAttribute("gpx", Namespace="http://www.topografix.com/GPX/1/1", IsNullable=false)]
    public partial class GpxDocument {
        
        private Metadata metadataField;
        
        private Waypoint[] wptField;
        
        private Route[] rteField;
        
        private Track[] trkField;
        
        private Extensions extensionsField;
        
        private string versionField;
        
        private string creatorField;
        
        public GpxDocument() {
            this.versionField = "1.1";
        }

        /// <summary>
        /// Information about the GPX file, author, and copyright restrictions. 
        /// Providing rich, meaningful information about your GPX files allows others to search for and use your GPS data. 
        /// </summary>
        /// <value>The metadata.</value>
        [System.Xml.Serialization.XmlElementAttribute("metadata")]
        public Metadata Metadata {
            get {
                return this.metadataField;
            }
            set {
                this.metadataField = value;
            }
        }


        /// <summary>
        /// Gets or sets the waypoints for this document.
        /// </summary>
        /// <value>The waypoints.</value>
        [System.Xml.Serialization.XmlElementAttribute("wpt")]
        public Waypoint[] Waypoints {
            get {
                return this.wptField;
            }
            set {
                this.wptField = value;
            }
        }

        /// <summary>
        /// Gets or sets the routes for this document.
        /// </summary>
        /// <value>The routes.</value>
        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute("rte")]
        public Route[] Routes {
            get {
                return this.rteField;
            }
            set {
                this.rteField = value;
            }
        }

        /// <summary>
        /// Gets or sets the tracks for this document.
        /// </summary>
        /// <value>The tracks.</value>
        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute("trk")]
        public Track[] Tracks {
            get {
                return this.trkField;
            }
            set {
                this.trkField = value;
            }
        }

        /// <summary>
        /// Add your own elements from another schema here.
        /// </summary>
        /// <value>The extensions.</value>
        [System.Xml.Serialization.XmlElementAttribute("extensions")]
        public Extensions Extensions {
            get {
                return this.extensionsField;
            }
            set {
                this.extensionsField = value;
            }
        }

        /// <summary>
        /// Gets or sets the version of the GPX schema which the document references. 
        /// </summary>
        /// <value>The version.</value>
        [System.Xml.Serialization.XmlAttributeAttribute("version")]
        public string Version {
            get {
                return this.versionField;
            }
            set {
                this.versionField = value;
            }
        }


        /// <summary>
        /// Gets or sets the name of the application or web service which created the file. 
        /// This is to assist developers in tracking down the source of a mal-formed GPX 
        /// document, and to provide a hint to users as to how they can open the file. 
        /// </summary>
        /// <value>The creator of the document.</value>
        [System.Xml.Serialization.XmlAttributeAttribute("creator")]
        public string Creator {
            get {
                return this.creatorField;
            }
            set {
                this.creatorField = value;
            }
        }
    }
    
    /// <summary>
    /// Information about the GPX file, author, and copyright restrictions goes in the metadata section. 
    /// Providing rich, meaningful information about your GPX files allows others to search for and use your GPS data. 
    /// </summary>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.42")]
    [System.SerializableAttribute()]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://www.topografix.com/GPX/1/1")]
    public partial class Metadata {
        
        private string nameField;
        
        private string descField;
        
        private Person authorField;
        
        private Copyright copyrightField;
        
        private Link[] linkField;
        
        private System.DateTime timeField;
        
        private bool timeFieldSpecified;
        
        private string keywordsField;
        
        private Bounds boundsField;
        
        private Extensions extensionsField;

        [System.Xml.Serialization.XmlElementAttribute("name")]
        public string Name {
            get {
                return this.nameField;
            }
            set {
                this.nameField = value;
            }
        }

        /// <summary>
        /// Gets or sets the description.
        /// </summary>
        /// <value>The description.</value>
        [System.Xml.Serialization.XmlElementAttribute("desc")]
        public string Description {
            get {
                return this.descField;
            }
            set {
                this.descField = value;
            }
        }

        [System.Xml.Serialization.XmlElementAttribute("author")]
        public Person Author {
            get {
                return this.authorField;
            }
            set {
                this.authorField = value;
            }
        }

        [System.Xml.Serialization.XmlElementAttribute("copyright")]
        public Copyright Copyright {
            get {
                return this.copyrightField;
            }
            set {
                this.copyrightField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute("link")]
        public Link[] Link {
            get {
                return this.linkField;
            }
            set {
                this.linkField = value;
            }
        }

        [System.Xml.Serialization.XmlElementAttribute("time")]
        public System.DateTime Time {
            get {
                return this.timeField;
            }
            set {
                this.timeField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool timeSpecified {
            get {
                return this.timeFieldSpecified;
            }
            set {
                this.timeFieldSpecified = value;
            }
        }

        [System.Xml.Serialization.XmlElementAttribute("keywords")]
        public string Keywords {
            get {
                return this.keywordsField;
            }
            set {
                this.keywordsField = value;
            }
        }

        [System.Xml.Serialization.XmlElementAttribute("bounds")]
        public Bounds Bounds {
            get {
                return this.boundsField;
            }
            set {
                this.boundsField = value;
            }
        }

        [System.Xml.Serialization.XmlElementAttribute("extensions")]
        public Extensions Extensions {
            get {
                return this.extensionsField;
            }
            set {
                this.extensionsField = value;
            }
        }
    }
    
    /// <summary>
    /// A person or organization. 
    /// </summary>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.42")]
    [System.SerializableAttribute()]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://www.topografix.com/GPX/1/1")]
    public partial class Person {
        
        private string nameField;
        
        private Email emailField;
        
        private Link linkField;

        /// <summary>
        /// Gets or sets the name of the person or company.
        /// </summary>
        /// <value>The name.</value>
        [System.Xml.Serialization.XmlElementAttribute("name")]
        public string Name {
            get {
                return this.nameField;
            }
            set {
                this.nameField = value;
            }
        }

        /// <summary>
        /// Gets or sets the email of the person or company.
        /// </summary>
        /// <value>The email.</value>
        [System.Xml.Serialization.XmlElementAttribute("email")]
        public Email Email {
            get {
                return this.emailField;
            }
            set {
                this.emailField = value;
            }
        }

        /// <summary>
        /// Gets or sets the link to an external resource associated to the person or company.
        /// </summary>
        /// <value>The link.</value>
        [System.Xml.Serialization.XmlElementAttribute("link")]
        public Link Link {
            get {
                return this.linkField;
            }
            set {
                this.linkField = value;
            }
        }
    }
    
    /// <summary>
    /// An email address. Broken into two parts (id and domain) to help prevent email harvesting.
    /// </summary>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.42")]
    [System.SerializableAttribute()]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://www.topografix.com/GPX/1/1")]
    public partial class Email {
        
        private string idField;
        
        private string domainField;


        /// <summary>
        /// Gets or sets the id of the email address (email text BEFORE the @).
        /// </summary>
        /// <value>The email id.</value>
        [System.Xml.Serialization.XmlElementAttribute("id")]
        public string Id {
            get {
                return this.idField;
            }
            set {
                this.idField = value;
            }
        }

        /// <summary>
        /// Gets or sets the domain of the email address (email text AFTER the @).
        /// </summary>
        /// <value>The email id.</value>
        [System.Xml.Serialization.XmlAttributeAttribute("domain")]
        public string Domain {
            get {
                return this.domainField;
            }
            set {
                this.domainField = value;
            }
        }
    }
    
    /// <summary>
    /// A Track Segment holds a list of Track Points which are logically connected in order. 
    /// To represent a single GPS track where GPS reception was lost, or the GPS receiver was 
    /// turned off, start a new Track Segment for each continuous span of track data. 
    /// </summary>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.42")]
    [System.SerializableAttribute()]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://www.topografix.com/GPX/1/1")]
    public partial class TrackSegment {
        
        private Waypoint[] trkptField;
        
        private Extensions extensionsField;


        /// <summary>
        /// Gets or sets the waypoints that compose this track segment.
        /// </summary>
        /// <value>The waypoints.</value>
        [System.Xml.Serialization.XmlElementAttribute("trkpt")]
        public Waypoint[] Waypoints
        { 
            get {
                return this.trkptField;
            }
            set {
                this.trkptField = value;
            }
        }

        /// <summary>
        /// Add your own elements from another schema here.
        /// </summary>
        /// <value>The extensions.</value>
        [System.Xml.Serialization.XmlElementAttribute("extensions")]
        public Extensions Extensions {
            get {
                return this.extensionsField;
            }
            set {
                this.extensionsField = value;
            }
        }
    }
    
    /// <summary>
    /// Represents a waypoint, point of interest, or named feature on a map. 
    /// </summary>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.42")]
    [System.SerializableAttribute()]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://www.topografix.com/GPX/1/1")]
    public partial class Waypoint {
        
        private decimal eleField;
        
        private bool eleFieldSpecified;
        
        private System.DateTime timeField;
        
        private bool timeFieldSpecified;
        
        private decimal magvarField;
        
        private bool magvarFieldSpecified;
        
        private decimal geoidheightField;
        
        private bool geoidheightFieldSpecified;
        
        private string nameField;
        
        private string cmtField;
        
        private string descField;
        
        private string srcField;
        
        private Link[] linkField;
        
        private string symField;
        
        private string typeField;
        
        private SatelliteFix fixField;
        
        private bool fixFieldSpecified;
        
        private string satField;
        
        private decimal hdopField;
        
        private bool hdopFieldSpecified;
        
        private decimal vdopField;
        
        private bool vdopFieldSpecified;
        
        private decimal pdopField;
        
        private bool pdopFieldSpecified;
        
        private decimal ageofdgpsdataField;
        
        private bool ageofdgpsdataFieldSpecified;
        
        private string dgpsidField;
        
        private Extensions extensionsField;
        
        private decimal latField;
        
        private decimal lonField;

        /// <summary>
        /// Gets or sets the elevation, in meters, of the point. 
        /// </summary>
        /// <value>The elevation, in meters.</value>
        [System.Xml.Serialization.XmlElementAttribute("ele")]
        public decimal Elevation {
            get {
                return this.eleField;
            }
            set {
                this.eleField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool eleSpecified {
            get {
                return this.eleFieldSpecified;
            }
            set {
                this.eleFieldSpecified = value;
            }
        }

        /// <summary>
        /// Gets or sets the creation/modification timestamp for element. 
        /// Date and time in are in Univeral Coordinated Time (UTC), not local time! 
        /// Conforms to ISO 8601 specification for date/time representation. 
        /// Fractional seconds are allowed for millisecond timing in tracklogs. 
        /// </summary>
        /// <value>The time.</value>
        [System.Xml.Serialization.XmlElementAttribute("time")]
        public System.DateTime Time {
            get {
                return this.timeField;
            }
            set {
                this.timeField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool timeSpecified {
            get {
                return this.timeFieldSpecified;
            }
            set {
                this.timeFieldSpecified = value;
            }
        }

        /// <summary>
        /// Gets or sets the magnetic variation at the point. 
        /// </summary>
        /// <value>The magnetic variation, in degrees.</value>
        [System.Xml.Serialization.XmlElementAttribute("magvar")]
        public decimal MagneticVariation {
            get {
                return this.magvarField;
            }
            set {
                this.magvarField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool magvarSpecified {
            get {
                return this.magvarFieldSpecified;
            }
            set {
                this.magvarFieldSpecified = value;
            }
        }

        /// <summary>
        /// Gets or sets the height, in meters, of geoid (mean sea level) above WGS-84 earth ellipsoid. (NMEA GGA message) 
        /// </summary>
        /// <value>The height, in meters.</value>
        [System.Xml.Serialization.XmlElementAttribute("geoidheight")]
        public decimal GeoIdHeight {
            get {
                return this.geoidheightField;
            }
            set {
                this.geoidheightField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool geoidheightSpecified {
            get {
                return this.geoidheightFieldSpecified;
            }
            set {
                this.geoidheightFieldSpecified = value;
            }
        }

        /// <summary>
        /// Gets or sets the the GPS name of the element. 
        /// This field will be transferred to and from the GPS. GPX does not place restrictions 
        /// on the length of this field or the characters contained in it. 
        /// It is up to the receiving application to validate the field before sending it to the GPS. 
        /// </summary>
        /// <value>The name.</value>
        [System.Xml.Serialization.XmlElementAttribute("name")]
        public string Name {
            get {
                return this.nameField;
            }
            set {
                this.nameField = value;
            }
        }

        /// <summary>
        /// Gets or sets the GPS waypoint comment. Sent to GPS as comment. 
        /// </summary>
        /// <value>String with coment</value>
        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute("cmt")]
        public string Comment {
            get {
                return this.cmtField;
            }
            set {
                this.cmtField = value;
            }
        }

        /// <summary>
        /// Gets or sets a text description of the element. 
        /// Holds additional information about the element intended for the user, not the GPS. 
        /// </summary>
        /// <value>The description.</value>
        [System.Xml.Serialization.XmlElementAttribute("desc")]
        public string Description {
            get {
                return this.descField;
            }
            set {
                this.descField = value;
            }
        }

        /// <summary>
        /// Gets or sets the source of data. Included to give user some idea of reliability and accuracy of data. 
        /// </summary>
        /// <example>Garmin eTrex Venture</example>
        /// <value>The source of data.</value>
        [System.Xml.Serialization.XmlElementAttribute("src")]
        public string SourceOfData {
            get {
                return this.srcField;
            }
            set {
                this.srcField = value;
            }
        }


        /// <summary>
        /// Gets or sets the links to external resources associated to the waypoint.
        /// </summary>
        /// <value>The link.</value>
        [System.Xml.Serialization.XmlElementAttribute("link")]
        public Link[] Link {
            get {
                return this.linkField;
            }
            set {
                this.linkField = value;
            }
        }

        /// <summary>
        /// Gets or sets the text of GPS symbol name. 
        /// For interchange with other programs, use the exact spelling of the symbol on the GPS, if known. 
        /// </summary>
        /// <example>Scenic Area</example>
        /// <value>The symbol name.</value>
        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute("sym")]
        public string SymbolName {
            get {
                return this.symField;
            }
            set {
                this.symField = value;
            }
        }


        /// <summary>
        /// Gets or sets the type (classification) of element.
        /// </summary>
        /// <example>Hiking trail</example>
        /// <value>The type.</value>
        [System.Xml.Serialization.XmlElementAttribute("type")]
        public string Type {
            get {
                return this.typeField;
            }
            set {
                this.typeField = value;
            }
        }

        /// <summary>
        /// Gets or sets the satellite fix.
        /// </summary>
        /// <value>The satellite fix.</value>
        [System.Xml.Serialization.XmlElementAttribute("fix")]
        public SatelliteFix SatelliteFix {
            get {
                return this.fixField;
            }
            set {
                this.fixField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool fixSpecified {
            get {
                return this.fixFieldSpecified;
            }
            set {
                this.fixFieldSpecified = value;
            }
        }

        /// <summary>
        /// Gets or sets the number of satellites used to calculate the GPS fix. (not number of satellites in view). 
        /// </summary>
        /// <value>The number of satellites.</value>
        [System.Xml.Serialization.XmlElementAttribute(ElementName="sat",DataType="nonNegativeInteger")]
        public string NumberOfSatellites {
            get {
                return this.satField;
            }
            set {
                this.satField = value;
            }
        }

        /// <summary>
        /// Gets or sets the horizontal dilution of precision.
        /// </summary>
        /// <value>The horizontal dilution of precision.</value>
        [System.Xml.Serialization.XmlElementAttribute("hdop")]
        public decimal HDOP {
            get {
                return this.hdopField;
            }
            set {
                this.hdopField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool hdopSpecified {
            get {
                return this.hdopFieldSpecified;
            }
            set {
                this.hdopFieldSpecified = value;
            }
        }

        /// <summary>
        /// Gets or sets the vertical dilution of precision.
        /// </summary>
        /// <value>The vertical dilution of precision.</value>
        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute("vdop")]
        public decimal VDOP {
            get {
                return this.vdopField;
            }
            set {
                this.vdopField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool vdopSpecified {
            get {
                return this.vdopFieldSpecified;
            }
            set {
                this.vdopFieldSpecified = value;
            }
        }

        /// <summary>
        /// Gets or sets the position dilution of precision.
        /// </summary>
        /// <value>The position dilution of precision.</value>
        [System.Xml.Serialization.XmlElementAttribute("pdop")]
        public decimal PDOP {
            get {
                return this.pdopField;
            }
            set {
                this.pdopField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool pdopSpecified {
            get {
                return this.pdopFieldSpecified;
            }
            set {
                this.pdopFieldSpecified = value;
            }
        }


        /// <summary>
        /// Gets or sets the number of seconds since last DGPS update. 
        /// </summary>
        /// <value>The number of seconds since last DGPS update.</value>
        [System.Xml.Serialization.XmlElementAttribute("ageofdgpsdata")]
        public decimal DgpsDataAge {
            get {
                return this.ageofdgpsdataField;
            }
            set {
                this.ageofdgpsdataField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool ageofdgpsdataSpecified {
            get {
                return this.ageofdgpsdataFieldSpecified;
            }
            set {
                this.ageofdgpsdataFieldSpecified = value;
            }
        }

        /// <summary>
        /// Gets or sets the ID of DGPS station used in differential correction. 
        /// </summary>
        /// <value>The ID of DGPS station used in differential correction.</value>
        [System.Xml.Serialization.XmlElementAttribute(ElementName = "dgpsid", DataType = "integer")]
        public string DGPSID {
            get {
                return this.dgpsidField;
            }
            set {
                this.dgpsidField = value;
            }
        }
        
        /// <summary>
        /// Add your own elements from another schema here.
        /// </summary>
        [System.Xml.Serialization.XmlElementAttribute("extensions")]
        public Extensions Extensions {
            get {
                return this.extensionsField;
            }
            set {
                this.extensionsField = value;
            }
        }

        /// <summary>
        /// Gets or sets the latitude, in decimal degrees (WGS84).
        /// </summary>
        /// <value>The latitude.</value>
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute("lat")]
        public decimal Latitude {
            get {
                return this.latField;
            }
            set {
                this.latField = value;
            }
        }

        /// <summary>
        /// Gets or sets the longitude, in decimal degrees (WGS84).
        /// </summary>
        /// <value>The longitude.</value>
        [System.Xml.Serialization.XmlAttributeAttribute("lon")]
        public decimal Longitude {
            get {
                return this.lonField;
            }
            set {
                this.lonField = value;
            }
        }
    }
    
    /// <summary>
    /// A link to an external resource (Web page, digital photo, video clip, etc) with additional information
    /// </summary>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.42")]
    [System.SerializableAttribute()]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://www.topografix.com/GPX/1/1")]
    public partial class Link {
        
        private string textField;
        
        private string typeField;
        
        private string hrefField;


        /// <summary>
        /// Gets or sets the text visible on the link to the external resource.
        /// </summary>
        /// <value>The text.</value>
        [System.Xml.Serialization.XmlAttributeAttribute("text")]
        public string Text {
            get {
                return this.textField;
            }
            set {
                this.textField = value;
            }
        }

        /// <summary>
        /// Gets or sets the type of the external resource.
        /// </summary>
        /// <value>The text.</value>
        [System.Xml.Serialization.XmlAttributeAttribute("type")]
        public string type {
            get {
                return this.typeField;
            }
            set {
                this.typeField = value;
            }
        }

        /// <summary>
        /// Gets or sets the URI of the external resource.
        /// </summary>
        /// <value>The text.</value>
        [System.Xml.Serialization.XmlAttributeAttribute(AttributeName="href",DataType="anyURI")]
        public string href {
            get {
                return this.hrefField;
            }
            set {
                this.hrefField = value;
            }
        }
    }


    /// <summary>
    /// <p>Type of GPS fix. </p><p/>
    /// <p>Must be one of: </p>
    /// <list type="bullet">
    /// <item>
    /// <description>none</description>
    /// <value>No fix</value>
    /// </item>
    /// <item>
    /// <description>2D</description>
    /// <value>Position only</value>
    /// </item>
    /// <item>
    /// <description>3D</description>
    /// <value>Position and elevation</value>
    /// </item>
    /// <item>
    /// <description>DGPS</description>
    /// <value>Obtained by Differential Global Positioning System</value>
    /// </item>
    /// <item>
    /// <description>PPS</description>
    /// <value>Military signal used</value>
    /// </item>
    /// </list>
    /// <remarks>To represent "fix type unknown", leave out fix entirely. </remarks>
    /// </summary>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.42")]
    [System.SerializableAttribute()]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://www.topografix.com/GPX/1/1")]
    public enum SatelliteFix {


        /// <summary>
        /// No fix
        /// </summary>
        [System.Xml.Serialization.XmlEnumAttribute("none")]
        NoFix,


        /// <summary>
        /// Position information only
        /// </summary>
        [System.Xml.Serialization.XmlEnumAttribute("2d")]
        Item2d,


        /// <summary>
        /// Position and elevation information.
        /// </summary>
        [System.Xml.Serialization.XmlEnumAttribute("3d")]
        Item3d,


        /// <summary>
        /// Position obtained by DGPS
        /// </summary>
        [System.Xml.Serialization.XmlEnumAttribute("dgps")]
        DGPS,


        /// <summary>
        /// Military signal used
        /// </summary>
        [System.Xml.Serialization.XmlEnumAttribute("pps")]
        PPS,
    }
    
    /// <summary>
    /// You can add extend GPX by adding your own elements from another schema here. 
    /// </summary>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.42")]
    [System.SerializableAttribute()]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://www.topografix.com/GPX/1/1")]
    public partial class Extensions {
        
        private System.Xml.XmlElement[] anyField;
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAnyElementAttribute()]
        public System.Xml.XmlElement[] Any {
            get {
                return this.anyField;
            }
            set {
                this.anyField = value;
            }
        }
    }
    
    /// <summary>
    /// Represents a track - an ordered list of points describing a path. 
    /// </summary>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.42")]
    [System.SerializableAttribute()]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://www.topografix.com/GPX/1/1")]
    public partial class Track {
        
        private string nameField;
        
        private string cmtField;
        
        private string descField;
        
        private string srcField;
        
        private Link[] linkField;
        
        private string numberField;
        
        private string typeField;
        
        private Extensions extensionsField;
        
        private TrackSegment[] trksegField;
        
        /// <summary>
        /// The GPS name of the element. This field will be transferred to and from the GPS. 
        /// GPX does not place restrictions on the length of this field or the characters 
        /// contained in it. It is up to the receiving application to validate the field
        /// before sending it to the GPS. 
        /// </summary>
        [System.Xml.Serialization.XmlElementAttribute("name")]
        public string Name {
            get {
                return this.nameField;
            }
            set {
                this.nameField = value;
            }
        }

        /// <summary>
        /// Gets or sets the GPS waypoint comment. Sent to GPS as comment. 
        /// </summary>
        /// <value>String with coment</value>
        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute("cmt")]
        public string Comment
        {
            get
            {
                return this.cmtField;
            }
            set
            {
                this.cmtField = value;
            }
        }
        
        /// <summary>
        /// A text description of the element. Holds additional information about the element intended for the user, not the GPS. 
        /// </summary>
        [System.Xml.Serialization.XmlElementAttribute("desc")]
        public string Description {
            get {
                return this.descField;
            }
            set {
                this.descField = value;
            }
        }

        /// <summary>
        /// Gets or sets the source of data. Included to give user some idea of reliability and accuracy of data. 
        /// </summary>
        /// <example>Garmin eTrex Venture</example>
        /// <value>The source of data.</value>
        [System.Xml.Serialization.XmlElementAttribute("src")]
        public string SourceOfData
        {
            get
            {
                return this.srcField;
            }
            set
            {
                this.srcField = value;
            }
        }

        /// <summary>
        /// Gets or sets the links to external resources associated to this track.
        /// </summary>
        /// <value>The link.</value>
        [System.Xml.Serialization.XmlElementAttribute("link")]
        public Link[] Links
        {
            get
            {
                return this.linkField;
            }
            set
            {
                this.linkField = value;
            }
        }

        /// <summary>
        /// Gets or sets the GPS slot number for element.
        /// </summary>
        /// <value>The slot number.</value>
        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute(ElementName="number",DataType="nonNegativeInteger")]
        public string ElementGpsSlotNumber {
            get {
                return this.numberField;
            }
            set {
                this.numberField = value;
            }
        }

        /// <summary>
        /// Gets or sets the type (classification) of element.
        /// </summary>
        /// <example>Hiking trail</example>
        /// <value>The type.</value>
        [System.Xml.Serialization.XmlElementAttribute("type")]
        public string Type
        {
            get
            {
                return this.typeField;
            }
            set
            {
                this.typeField = value;
            }
        }

        /// <summary>
        /// Add your own elements from another schema here.
        /// </summary>
        /// <value>The extensions.</value>
        [System.Xml.Serialization.XmlElementAttribute("extensions")]
        public Extensions Extensions
        {
            get
            {
                return this.extensionsField;
            }
            set
            {
                this.extensionsField = value;
            }
        }

        /// <summary>
        /// Track segments associated to this track.
        /// A Track Segment holds a list of Track Points which are logically connected in order. 
        /// To represent a single GPS track where GPS reception was lost, or the GPS receiver 
        /// was turned off, start a new Track Segment for each continuous span of track data.
        /// </summary>
        /// <value>The track segments.</value>
        [System.Xml.Serialization.XmlElementAttribute("trkseg")]
        public TrackSegment[] TrackPoints {
            get {
                return this.trksegField;
            }
            set {
                this.trksegField = value;
            }
        }
    }
    
    /// <summary>
    /// Represents route - an ordered list of waypoints representing a series of turn points leading to a destination. 
    /// </summary>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.42")]
    [System.SerializableAttribute()]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://www.topografix.com/GPX/1/1")]
    public partial class Route {
        
        private string nameField;
        
        private string cmtField;
        
        private string descField;
        
        private string srcField;
        
        private Link[] linkField;
        
        private string numberField;
        
        private string typeField;
        
        private Extensions extensionsField;
        
        private Waypoint[] rteptField;

        /// <summary>
        /// The GPS name of the element. This field will be transferred to and from the GPS. 
        /// GPX does not place restrictions on the length of this field or the characters 
        /// contained in it. It is up to the receiving application to validate the field
        /// before sending it to the GPS. 
        /// </summary>
        [System.Xml.Serialization.XmlElementAttribute("name")]
        public string Name
        {
            get
            {
                return this.nameField;
            }
            set
            {
                this.nameField = value;
            }
        }

        /// <summary>
        /// Gets or sets the GPS waypoint comment. Sent to GPS as comment. 
        /// </summary>
        /// <value>String with coment</value>
        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute("cmt")]
        public string Comment
        {
            get
            {
                return this.cmtField;
            }
            set
            {
                this.cmtField = value;
            }
        }

        /// <summary>
        /// A text description of the element. Holds additional information about the element intended for the user, not the GPS. 
        /// </summary>
        [System.Xml.Serialization.XmlElementAttribute("desc")]
        public string Description
        {
            get
            {
                return this.descField;
            }
            set
            {
                this.descField = value;
            }
        }

        /// <summary>
        /// Gets or sets the source of data. Included to give user some idea of reliability and accuracy of data. 
        /// </summary>
        /// <example>Garmin eTrex Venture</example>
        /// <value>The source of data.</value>
        [System.Xml.Serialization.XmlElementAttribute("src")]
        public string SourceOfData
        {
            get
            {
                return this.srcField;
            }
            set
            {
                this.srcField = value;
            }
        }

        /// <summary>
        /// Gets or sets the links to external resources associated to this route.
        /// </summary>
        /// <value>The link.</value>
        [System.Xml.Serialization.XmlElementAttribute("link")]
        public Link[] Links
        {
            get
            {
                return this.linkField;
            }
            set
            {
                this.linkField = value;
            }
        }

        /// <summary>
        /// Gets or sets the GPS slot number for element.
        /// </summary>
        /// <value>The slot number.</value>
        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute(ElementName = "number", DataType = "nonNegativeInteger")]
        public string ElementGpsSlotNumber
        {
            get
            {
                return this.numberField;
            }
            set
            {
                this.numberField = value;
            }
        }

        /// <summary>
        /// Gets or sets the type (classification) of element.
        /// </summary>
        /// <example>Hiking trail</example>
        /// <value>The type.</value>
        [System.Xml.Serialization.XmlElementAttribute("type")]
        public string Type
        {
            get
            {
                return this.typeField;
            }
            set
            {
                this.typeField = value;
            }
        }

        /// <summary>
        /// Add your own elements from another schema here.
        /// </summary>
        /// <value>The extensions.</value>
        [System.Xml.Serialization.XmlElementAttribute("extensions")]
        public Extensions Extensions
        {
            get
            {
                return this.extensionsField;
            }
            set
            {
                this.extensionsField = value;
            }
        }


        /// <summary>
        /// Gets or sets the list of route points.
        /// </summary>
        /// <value>The rtept.</value>
        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute("rtept")]
        public Waypoint[] RoutePoints {
            get {
                return this.rteptField;
            }
            set {
                this.rteptField = value;
            }
        }
    }
    
    /// <summary>
    /// Two latitude/longitude pairs defining the extent of an element. 
    /// <remarks>Bounding rectangle of all data in GPX file. Allows indexing by geographic extent. </remarks>
    /// </summary>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.42")]
    [System.SerializableAttribute()]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://www.topografix.com/GPX/1/1")]
    public partial class Bounds {
        
        private decimal minlatField;
        
        private decimal minlonField;
        
        private decimal maxlatField;
        
        private decimal maxlonField;
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute("minlat")]
        public decimal MinimumLatitude {
            get {
                return this.minlatField;
            }
            set {
                this.minlatField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute("minlon")]
        public decimal MinimumLongitude {
            get {
                return this.minlonField;
            }
            set {
                this.minlonField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute("maxlat")]
        public decimal MaximumLatitude {
            get {
                return this.maxlatField;
            }
            set {
                this.maxlatField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute("maxlon")]
        public decimal MaximumLongitude {
            get {
                return this.maxlonField;
            }
            set {
                this.maxlonField = value;
            }
        }
    }
    
    /// <summary>
    /// Information about the copyright holder and any license governing use of this file. 
    /// By linking to an appropriate license, you may place your data into the public domain or grant additional usage rights. 
    /// </summary>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.42")]
    [System.SerializableAttribute()]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://www.topografix.com/GPX/1/1")]
    public partial class Copyright {
        
        private string yearField;
        
        private string licenseField;
        
        private string authorField;
        
        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute(ElementName="year",DataType="gYear")]
        public string Year {
            get {
                return this.yearField;
            }
            set {
                this.yearField = value;
            }
        }

        /// <summary>
        /// Gets or sets the URI to the license covering this document.
        /// </summary>
        /// <value>The license.</value>
        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute(ElementName="license",DataType="anyURI")]
        public string License {
            get {
                return this.licenseField;
            }
            set {
                this.licenseField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute("author")]
        public string Author {
            get {
                return this.authorField;
            }
            set {
                this.authorField = value;
            }
        }
    }
}
